<?php
session_start();
// ****************************************************
// 文件上传基本类 Xupload_class 提供的操作函数
// ****************************************************
// SetMinFileSize( value As Integer )	设置上传文件的最小字节数，默认值为 1
// SetMaxFileSize( value As Integer )	设置上传文件的最大字节数，默认值为 10485760（10MB）
// SetMaxFileCount( value As Integer )	设置指定一次上传允许的最大文件数量，默认值为 100
// SetMaxTotalSize( value As Integer )	设置指定一次上传允许的总数据量（字节），默认值为 10485760（10MB）
// SetAllowExt( value As String )	设置允许上传的文件类型，不分大小写，多个名字间用分号分割，默认值为 ""
// SetDenyExt( value As String )	设置不允许上传的文件类型，不分大小写，多个名字间用分号分割，默认值为 "asa;asp;cdx;cer;aspx;php"
// SetThumbImage( value As String )	设置JPG缩略图参数：width * height，默认值为 ""
// SetStatURL( value As String )	设置上传统计页面，默认值为 ""
// SetOverlayMode( value As Boolean )	设置文件覆盖模式设置，默认值为 false

// GetVersion( )	返回类的版本号
// IsError( )	返回在上传过程中是否过出现错误
// OutErr( message As String )	输出错误（调试）信息
// Out( message As String )	输出上传结果

// InitParameters( )	执行运行参数的初始化操作
// IsUploadFile( )	检测文件上传操作是否完成
// SaveToFile( filename As String )	将上传的文件保存起来，并返回存储的文件名（返回空串表示失败）
// HasThumbImage( )	检测在上传数据中是否包含缩略图数据
// SaveThumbToFile( filename As String )	将上传的缩略图文件保存起来，并返回存储的文件名（返回空串表示失败）
// CreateFileName( base As String, subpath As String, filename As String )	构建上传文件的存储地址，结果为 base\subpath\filename ，返回空串表示构建失败
// CreateFileURL( base As String, subpath As String, filename As String )	构建上传文件的访问地址，结果为 base/subpath/filename ，返回空串表示构建失败

// ****************************************************
// 设置上传参数，您可以依据您的情况进行设置
// ****************************************************

include("xu_class.php");
$myUpload = new XUpload_class;

// 限制每个上传文件的最小长度（1 表示允许无数据的文件）
$myUpload->SetMinFileSize(1);

// 限制每个上传文件的最大长度（10485760 = 10 兆字节）
//$myUpload->SetMaxFileSize(10485760);
$myUpload->SetMaxFileSize($_SESSION['xu']['MaxTotalSize']);

// 限制一次可以上传的文件数量
//$myUpload->SetMaxFileCount(10);
$myUpload->SetMaxFileCount($_SESSION['xu']['MaxFileCount']);

// 限制所有上传文件的长度之和
//$myUpload->SetMaxTotalSize(10485760 * 2);
$myUpload->SetMaxTotalSize($_SESSION['xu']['MaxTotalSize'] * 2);

// 允许上传的文件类型，不分大小写，多个名字间用分号分割
//$myUpload->SetAllowExt("");
$myUpload->SetAllowExt($_SESSION['xu']['AllowExt']);

// 不允许上传的文件类型，不分大小写，多个名字间用分号分割
//$myUpload->SetDenyExt("asa;asp;cdx;cer;aspx;php;");
$myUpload->SetDenyExt($_SESSION['xu']['DenyExt']);

// JPG缩略图参数（为空则不生成缩略图）：width * height
$myUpload->SetThumbImage("");

// 上传统计页面，每个文件上传后将上传结果传递给这个页面（可以为空）
//$myUpload->SetStatURL("upstat.php?tag=");

// 文件覆盖模式设置（是否覆盖原同名文件）
$myUpload->SetOverlayMode(true);

$myUpload->InitParameters();
// ****************************************************

function Bic()
{
    list($usec, $sec) = explode(" ", microtime());
	$usec=$usec+(rand(1,400)*rand(400,900)*rand(900,1300));
	$sec=$sec+(rand(1,400)*rand(400,900)*rand(900,1300));
    return 100*(((float)$usec + (float)$sec));
}

if ($myUpload->IsUploadFile()) {
	// 表单数据项：
	//	xu_subpath	子文件夹参数（可做文件分类用）
	//	xu_filename	上传文件的文件名
	//	xu_filetype	上传文件的文件类型
	//	xu_filesize	上传文件的文件长度（字节）
	//	xu_thumbtag	缩略图标志
	//	xu_thumbsize	缩略图文件数据长度（字节）
	if (get_magic_quotes_gpc()) {
		// 修正表单数据项
		$_POST['xu_subpath'] = stripslashes($_POST['xu_subpath']);
		$_POST['xu_filename'] = stripslashes($_POST['xu_filename']);
	}

	$_POST['xu_subpath'] = str_replace('\\','/',$_POST['xu_subpath']);
	// 将文件保存在 ../../uploads/[subpath] 下
	$filename = $myUpload->CreateFileName("../../uploads/",$_POST['xu_subpath'],$_POST['xu_filename']);
	
	//要入库的文件名
	$tmp=explode('.',$_POST['xu_filename']);
	$type='.'.$tmp[count($tmp)-1];
	$newfilename = 'zh'.Bic().$type;
	$newfile=$myUpload->CreateFileName("../../uploads/",$_POST['xu_subpath'],$newfilename);
	
	if ($filename != "") $filename = $myUpload->SaveToFile($filename);
	if ($filename != "") {
		// 如果有缩略图数据，则保存为缩略图文件
		if ($myUpload->HasThumbImage()) $myUpload->SaveThumbToFile($filename . "-thumb.jpg");
		// 上传成功，构建上传文件的访问地址
		//$filename = $myUpload->CreateFileURL("../../uploads/",$_POST['xu_subpath'],$filename);
		// 将访问地址加上访问路径
		//if ($filename{0} != '/') $filename = dirname($_SERVER['PHP_SELF']) . "/" . $filename;
		//删除老文件
		$tmp=explode('#',$_SESSION['xu']['OldFile']);
		foreach($tmp as $k){
			@unlink("../../uploads/".$_POST['xu_subpath'].$k);
		}
		
		//重命名文件
		if(@rename($filename,$newfile)){
			$returnname=$newfilename;
		}else{
			$returnname=$_POST['xu_filename'];
		}
		// 返回上传文件的访问地址（成功后必须返回一个值）
		//$myUpload->Out($filename);
		$myUpload->Out($returnname);
	}
}
?>